import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 言初
 * Date: 2022-11-04
 * Time: 22:21
 */

//测试一下，再测试一次
public class Test {

    public static void main(String[] args) {
        int[] array={1,8,6,2,5,4,8,3,7};
        int count=maxArea(array);
        System.out.println(count);
    }
    public static int maxArea(int[] height) {
        //. 盛最多水的容器
        //https://leetcode.cn/problems/container-with-most-water/
        int count=0;
        int i=0;
        int j=height.length-1;
        while(i<j){
            int ret;
            if(height[i]<height[j]){
                ret=height[i]*(j-i);
                i++;
            }else{
                ret=height[j]*(j-i);
                j--;
            }
            if(ret>count){
                count=ret;
            }
        }
        return count;
    }



    public static boolean ThreeNumber(int[] array)
    {
        for (int i = 0; i < array.length-2; i++) {
            int flag=0;
            for (int j = i; j < i+3 ; j++) {
                if(array[j]%2!=0)
                {
                    flag++;
                }
            }
            if(flag==3)
            {
                return true;
            }
        }
        return false;
    }
    public static void main8(String[] args) {
        //存在连续三个奇数的数组
        //请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false 。
        int[] array1={2,6,4,1};
        int[] array2={1,2,34,3,4,5,7,23,12};
        System.out.println(ThreeNumber(array1));
        System.out.println(ThreeNumber(array2));
    }
    public static int Number(int[] array)
    {
        for (int i = 0; i < array.length; i++) {
            int flag=0;
            for (int j = 0; j < array.length; j++) {
                if(array[i]==array[j])
                {
                    flag++;
                }
            }
            if(flag>array.length/2)
            {
                return array[i];
            }
        }
        return -1;//这里使用返回-1表示没找到
    }
    public static void main7(String[] args) {
        //给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
        int[] array1= {3, 2, 3};
        int[] array2={2,2,2,1,1,2,2};
        int a1=Number(array1);
        int a2=Number(array2);
        System.out.println(a1);
        System.out.println(a2);
    }
    public static int Find(int[] array)
    {
        for (int i = 0; i < array.length; i++) {
            int flag=0;
            for (int j = 0; j < array.length; j++) {
                if(array[i]==array[j])
                {
                    flag++;
                }
            }
            if(flag==1)
            {
                return array[i];
            }
        }
        return -1;//返回-1表示没找到
    }
    public static void main6(String[] args) {
        //输出只出现一次的数字
        //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
        int[] array1={2,2,1};
        int[] array2={1,2,4,1,2};
        int a1=Find(array1);
        int a2=Find(array2);
        System.out.println(a1);
        System.out.println(a2);
    }
    //两数之和
    public static int[] Add(int[] array,int n)
    {

        for (int i = 0; i < array.length; i++) {
            for (int j = i+1; j < array.length; j++) {
                if(array[i]+array[j]==n)
                {
                    int[] tmp=new int[2];
                    tmp[0]=i;
                    tmp[1]=j;
                    return tmp;
                }
            }
        }
        return null;
    }
    public static void main5(String[] args) {
        //给定一个整数数组 nums 和一个整数目标值 target，
        // 请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
        int[] array={2,11,7,15};
        int[] tmp=Add(array,9);
        System.out.println(Arrays.toString(tmp));
    }
    public static void BubbleSort(int[] array)
    {
        //思想，从第一个元素开始向后比，每次数组比较的个数减一，比较一次，最大的数字就跑到最后面了，（升序的情况下)
        //每次都是从第一个元素开始向后面比
        int n= array.length;
        while(n!=0)
        {
            int flag=0;
            for (int i = 0; i < n-1; i++) {
                if(array[i]>array[i+1])
                {
                    int tmp=array[i];
                    array[i]=array[i+1];
                    array[i+1]=tmp;
                    flag=1;
                }
            }
            if(flag==0)
            {
                break;
            }
            n--;
        }

    }
    public static void main4(String[] args) {
        //给定一个整型数组, 实现冒泡排序(升序排序)
        int[] array={1,4,6,3,7,2,8};
        //int[] array={1,2,3,4,5,6,7,8};
        BubbleSort(array);
        System.out.println(Arrays.toString(array));
    }
    //给定一个有序整型数组, 实现二分查找
    public static int BinarySearch(int[] array,int n)
    {
        int left=0;
        int right=array.length-1;
        while(left<=right)
        {
            int mid=(right+left)/2;
            if(n==array[mid]) {
                return mid;
            }else if(n<array[mid]) {
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        return -1;
    }
    public static void main3(String[] args) {
        int[] array={1,2,3,4,5,6,7,8};
        int i=BinarySearch(array,4);
        int a=BinarySearch(array,10);
        int b=BinarySearch(array,1);
        int c=BinarySearch(array,8);
        System.out.println(i);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
    public static void before(int[] array)
    {
        int[] tmp=new int[array.length];
        int j=0;
        int n=0;
        for(int i=0;i<array.length;i++)
        {
            if(array[i]%2==0)//偶数
            {
                tmp[n]=array[i];
                n++;
            } else { //奇数
                array[j]=array[i];
                j++;
            }
        }
        int m=0;
        for(int i=j;i<array.length;i++)
        {
            array[i]=tmp[m];
            m++;
        }
    }
    public static void main2(String[] args) {
        //奇数位于偶数之前
        //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
        //如数组：[1,2,3,4,5,6]
        //调整后可能是：[1, 5, 3, 4, 2, 6]
        int[] array={1,2,3,4,5,6};
        before(array);
        System.out.println(Arrays.toString(array));
    }
    public static void transform(int[] array)
    {
        for (int i = 0; i < array.length; i++) {
            array[i]=array[i]*2;
        }
    }
    public static void main1(String[] args) {
        //改变原有数组元素的值
        //实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
        // 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
        int[] array={1,2,3};
        transform(array);
        System.out.println(Arrays.toString(array));
    }
}
